package org.newdawn.yapgame;

/**
 * Interface of event manager classes
 * 
 * @author Marko Walther
 */
public interface IEventManager
{
	public boolean enqueue( Event ev );

	public long getNumHandlers();
	
	public long getNumHandlers( Class<? extends Event> eventCls );

	public long getNumRegisteredEventTypes();
	
	public boolean registerEventHandler( Class<? extends Event> eventCls, IEventHandler handler );

	public boolean tick( long maxTimeout );

	public boolean trigger( Event e );
	
	public boolean unregisterEventHandler( IEventHandler handler );	

	public boolean unregisterEventHandler( Class<? extends Event> eventCls, IEventHandler handler );	
}
